Page({

  /**
   * 页面的初始数据
   */
  data: {
    lunBoArr: [],  // 轮播图图片数组（存储 Base64）
    tapArr: ["心理测评", "咨询预约", "心理答疑", "心理知识", "FM", "公益中心"],
    tapPathArr: [
      "../homedetail/tap/xinliceping/xinliceping",
      "../homedetail/tap/zixunyuyue/zixunyuyue",
      "../homedetail/tap/xinlidayi/xinlidayi",
      "../homedetail/tap/xinlizhishi/xinlizhishi",
      "../homedetail/tap/FM/FM",
      "../homedetail/tap/gongyizhongxin/gongyizhongxin"
    ],
    tapArrPath: [
      "@2x_ceping.png",
      "@2x_yuyue.png",
      "@2x_dayi.png",
      "@2x_zhishi.png",
      "@2x_FM.png",
      "@2x_gongyi.png"
    ],
    search: "",
    textArr: [],  // 存储文章数据
    pageNo: 1,    // 当前页码
    pageSize: 5,  // 每页显示的数量
    moreshow: false,  // 控制加载中提示的显示
  },

  // 请求文章列表数据
  fetchArticles: function () {
    wx.showLoading({
      title: '加载中...',
    });

    wx.request({
      url: `http://127.0.0.1:9090/articles?pageNum=${this.data.pageNo}&pageSize=${this.data.pageSize}`,
      success: (res) => {
        const articles = res.data.list; // 假设返回的数据在 list 中
        if (articles.length === 0) {
          wx.showToast({
            title: '没有更多数据',
            icon: 'none',
            duration: 1500,
          });
        } else {
          // 获取轮播图前5个文章的图片
          const lunBoImages = articles.slice(0, 5).map(item => item.image);

          // 使用 Promise.all 确保所有图片都加载完成后再更新数据
          const imagePromises = lunBoImages.map((imageUrl, index) => {
            return new Promise((resolve) => {
              this.getImage(imageUrl, (base64Image) => {
                if (base64Image) {
                  lunBoImages[index] = base64Image; // 更新轮播图图片为 Base64 格式
                }
                resolve();
              });
            });
          });

          // 等待所有图片加载完成
          Promise.all(imagePromises).then(async () => {
            // 更新文章中的 image 为 Base64 格式
            const updatedArticles = [];
            
            for (let article of articles) {
              // 获取图片并转为 Base64 格式
              const base64Image = await new Promise((resolve) => {
                this.getImage(article.image, (base64Image) => {
                  resolve(base64Image);
                });
              });

              // 更新文章的 image
              article.image = base64Image || article.image;
              updatedArticles.push(article);
            }

            this.setData({
              lunBoArr: lunBoImages,  // 更新轮播图数组为 Base64 格式
              textArr: this.data.pageNo === 1 ? updatedArticles : this.data.textArr.concat(updatedArticles), // 更新文章数据
              pageNo: this.data.pageNo + 1,  // 更新页码
              moreshow: false,  // 隐藏加载中提示
            });


          });
        }
        wx.hideLoading();
      },
      fail: (err) => {
        console.error('请求失败', err);
        wx.hideLoading();
      },
    });
  },

  // 获取图片并转为 Base64
  getImage: function (imageUrl, callback) {
    wx.request({
      url: `http://localhost:9090/file/download2`, // 图片回显接口
      method: 'GET',
      data: {
        fileName: imageUrl, // 图片名
      },
      success: (res) => {
        // 获取到图片的 Base64 编码后，调用回调函数
        if (res.data) {
          const base64Image = 'data:image/png;base64,' + res.data; // 图片转为 Base64 格式
          callback(base64Image); // 将 Base64 图片传递给回调函数
        } else {
          callback(null);  // 如果获取失败，返回 null
        }
      },
      fail: () => {
        wx.showToast({
          title: '图片加载失败',
          icon: 'none'
        });
        callback(null); // 即使失败，也调用回调函数
      }
    });
  },

  // 跳转到文章详情页
  toMoreDetil: function (e) {
    const selectedArticle = this.data.textArr[e.currentTarget.dataset.index];
 
    if (selectedArticle) {
      wx.setStorageSync("obj", selectedArticle);
      wx.navigateTo({
        url: "../homedetail/more/moredetail/moreDetail",  
      });
    } else {
      wx.showToast({
        title: '文章数据加载失败',
        icon: 'none'
      });
    }
  },

  more_text1() {
    wx.navigateTo({
      url: '../homedetail/more/more',
      success: (result) => { console.log("跳转更多成功") },
      fail: (res) => {
        console.log("跳转更多失败")
        console.log(res)
      },
    })
  },

  tap_box_enter_by_index(e) {
    wx.navigateTo({
      url: this.data.tapPathArr[e.currentTarget.dataset.index],
    })
  },

  toTextDtail(e) {
    console.log(this.data.textArr[e.currentTarget.dataset.index])
    wx.setStorageSync("obj", this.data.textArr[e.currentTarget.dataset.index])
    wx.navigateTo({
      url: "../homedetail/textdtail/textdtail",
    })
  },

  search() {
    wx.navigateTo({
      url: '../homedetail/search/search',
    })
  },

  // 页面加载时
  onLoad: function (options) {
    // 先执行 fetchArticles 再输出数据
    this.fetchArticles();
    console.log(this.data.lunBoArr)
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log("下拉动作")
    // this.fetchArticles(); // 重新加载数据
  }

})
